博客
关于我
03-Action类的创建方式及访问
阅读量:799 次
发布时间:2023-04-03

本文共 1727 字,大约阅读时间需要 5 分钟。

关于Struts2 Action类的创建方式及访问方法

在Struts2框架开发中,Action类的创建方式和访问方法是核心内容之一。本文将从Action类的创建方式以及其访问方法两方面进行详细介绍。

Action类的创建方式

Struts2框架支持三种创建Action类的方式,每种方式都有其独特的优缺点和适用场景。

  • 创建一个POJO类

    POJO(Plain Old Java Objects)指的是没有实现任何接口,也没有继承任何父类(除了Object)的普通Java对象。这种方式的优点是无耦合度高,但缺点是所有操作都需要手动实现。
    在Struts2框架中,这种方式通过反射来实现:

    • 首先读取struts.xml文件,获取完整Action类名。
    • 然后使用Class.forName()方法加载该类。
    • 最后通过newInstance()创建对象,并调用execute()方法。
      例如:
    obj = Class.forName("cn.itcast.action.BookAction").newInstance();
    Method m = Class.forName("cn.itcast.action.BookAction").getMethod("execute");
    m.invoke(obj);
  • 创建一个实现Action接口的类

    Action接口是Struts2框架的核心接口,提供了五种结果视图(SUCCESS、ERROR、INPUT、LOGIN、NONE)以及行为方法。这种方式的优点是耦合度较低,但缺点是需要手动实现接口中的方法并管理结果视图。
    例如:

    public class BookAction implements Action {
    public String SUCCESS = "success";
    public String ERROR = "error";
    public String execute() {
    // 数据处理逻辑
    return SUCCESS;
    }
    }
  • 继承自ActionSupport类

    ActionSupport类是Action接口的实现类,内置提供了表单校验、错误信息设置、国际化支持等功能。这种方式的优点是开发效率高,但耦合度较高。
    例如:

    public class BookAction extends ActionSupport {
    public String execute() {
    // 数据处理逻辑
    return SUCCESS;
    }
    }
  • Action的访问方法

    Struts2框架提供了多种方式来访问Action类中的方法。

  • 通过method属性指定方法

    在struts.xml文件中,可以通过method属性指定需要调用Action类中的哪个方法。
    例如:

    当访问book_add时,会调用BookAction类中的add方法。

  • 使用通配符简化配置

    通配符可以简化Action类的配置,适用于多个Action类共享同一个配置文件的情况。
    在struts.xml中,可以使用*_*作为通配符。
    例如:

    这样,当访问Book!addProduct!delete时,会分别调用相应的方法。

  • 动态方法调用

    Struts2框架支持动态方法调用,通过在URL中使用感叹号!分隔方法名称。
    例如:

    book add

    当访问Book!add时,会调用BookAction类中的add方法。

    为了支持动态方法调用,请确保在struts.properties文件中设置:

    struts.enable.DynamicMethodInvocation = true
  • 注意事项

    • 动态方法调用:需要确保动态方法调用被启用。
    • 命名规范:在使用通配符时,必须定义统一的命名规范,避免混乱。
    • 反射机制:在创建POJO类时,Struts2框架会通过反射机制调用方法,这可能对性能有一定影响。

    通过以上方法,可以灵活地创建和访问Struts2框架下的Action类,从而实现高效的应用开发。

    转载地址:http://neefk.baihongyu.com/

    你可能感兴趣的文章
    sum(a.YYSR) over (partition by a.hy_dm) 不需要像group by那样需要分组函数。方便。
    查看>>
    ORCHARD 是什么?
    查看>>
    Struts2中使用Session的两种方法
    查看>>
    Stream API:filter、map和flatMap 的用法
    查看>>
    STM32工作笔记0032---编写跑马灯实验---寄存器版本
    查看>>
    ssm旅游信息管理系统的设计与实现bus56(程序+开题)
    查看>>
    order by rand()
    查看>>
    SSM(Spring+SpringMvc+Mybatis)整合开发笔记
    查看>>
    Orderer节点启动报错解决方案:Not bootstrapping because of 3 existing channels
    查看>>
    org.apache.axis2.AxisFault: org.apache.axis2.databinding.ADBException: Unexpected subelement profile
    查看>>
    sql查询中 查询字段数据类型 int 与 String 出现问题
    查看>>
    org.apache.commons.beanutils.BasicDynaBean cannot be cast to ...
    查看>>
    org.apache.dubbo.common.serialize.SerializationException: com.alibaba.fastjson2.JSONException: not s
    查看>>
    sqlserver学习笔记(三)—— 为数据库添加新的用户
    查看>>
    org.apache.http.conn.HttpHostConnectException: Connection to refused
    查看>>
    org.apache.ibatis.binding.BindingException: Invalid bound statement错误一例
    查看>>
    org.apache.ibatis.exceptions.PersistenceException:
    查看>>
    org.apache.ibatis.exceptions.TooManyResultsException: Expected one result (or null) to be returned
    查看>>
    org.apache.ibatis.type.TypeException: Could not resolve type alias 'xxxx'异常
    查看>>
    org.apache.poi.hssf.util.Region
    查看>>